#include "cargopool.h"

CargoPool::CargoPool(QObject *parent) : QObject(parent)
{
    fillCargo();
}

void CargoPool::fillCargo()
{
    for(int i =0; i < 8; ++i){
        m_cargo_que.emplace_back(std::make_shared<Cargo>("cargo_" + QString::number(i)));
    }
    updateCargoList(getNewCargoList());
}

std::shared_ptr<Cargo> CargoPool::popCargo()
{
    std::unique_lock<std::mutex> lock(m_que_mtx);
    std::shared_ptr<Cargo> cargo  = m_cargo_que.front();
    m_cargo_que.erase(m_cargo_que.begin());
    updateCargoList(getNewCargoList());
    return cargo;
}

bool CargoPool::hasCargo()
{
    return !m_cargo_que.empty();
}

QStringList CargoPool::getNewCargoList()
{
    QStringList li;
    for(const auto& dev : m_cargo_que){
        li.push_back(dev->getId());
    }
    return li;
}
